import java.util.Arrays;

public class MinimumNumberofArrowstoBurstBalloons0107_452 {
    public int findMinArrowShots(int[][] points) {

        // 根据气球直径的开始坐标从小到大排序
        // 使用Integer内置比较方法，不会溢出
        Arrays.sort(points,(p1,p2) ->{
            return Integer.compare(p1[0], p2[0]);
        });
//        Arrays.sort(points, (a, b) -> Long.compare(a[1], b[1]));

        int res = 1; //至少1支
        for (int i = 1; i < points.length; i++) {
            if(points[i][0] > points[i-1][1]) res++;  // 气球i和气球i-1不挨着，注意这里不是>=
            else {
                points[i][1] = Math.min(points[i][1],points[i-1][1]); //我艹；神奇思路！！   // 如果挨着，就不停更新重叠气球最小右边界，即使是三个气球挨着
            }
        }
        return res;
    }
}
